﻿Imports System.Net.Mail
Imports System.Configuration

Partial Public Class Wfrm_Examenes
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            txt_fonofijo.Attributes.Add("onkeypress", "javascript:return impideLetras(event);")
            txt_Celular.Attributes.Add("onkeypress", "javascript:return impideLetras(event);")
            llena_combo()
        End If
    End Sub
    Protected Sub ImageButton1_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton1.Click
        If valida_datos() = 0 Then
            Exit Sub
        End If

        Dim rp As New DotNetResponse.SQLPersistence
        Session("rut") = txtRut.Text & "-" & txtDV.Text
        Session("nombres") = txtNombres.Text
        Session("paterno") = txtApaterno.Text
        Session("materno") = txtAmaterno.Text
        Session("telefono") = txt_fonofijo.Text
        Session("mail") = txt_email1.Text
        Session("direccion") = txtdireccion.Text
        Session("examen") = txt_examen.Text

        Dim email_fin As String
        email_fin = txt_email1.Text '& "@" & txt_email11.Text

        If email_fin <> "" Then
            Dim partes, parte, letra
            Dim i As Integer
            Dim bandera3
            partes = Split(email_fin, "@")
            If UBound(partes) <> 1 Then
                pnl_mensaje.Visible = True
                pnl_mensaje.UpdateAfterCallBack = True
                lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                lbl_mensaje.UpdateAfterCallBack = True
                txt_email1.ReadOnly = False
                txt_email1.UpdateAfterCallBack = True
                'txt_email12.ReadOnly = False
                'txt_email12.UpdateAfterCallBack = True
                Session("mail") = "2"
                Session("update") = "update"
                bandera3 = 0
                Exit Sub
            Else
                For Each parte In partes
                    bandera3 = 1
                    For i = 1 To Len(parte)
                        letra = LCase(Mid(parte, i, 1))
                        If InStr("._-abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", letra) <= 0 Then
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = "NO SE ACEPTA EL USO DE CARACTERES ESPECIALES COMO ñ,&,*,+,/,%,$"
                            lbl_mensaje.UpdateAfterCallBack = True
                            Session("mail") = "2"
                            Session("update") = "update"
                            bandera3 = 0
                            Exit For
                        Else
                            If lbl_mensaje.Text = "" Then
                                pnl_mensaje.Visible = False
                                pnl_mensaje.UpdateAfterCallBack = True
                                lbl_mensaje.Text = ""
                                lbl_mensaje.UpdateAfterCallBack = True
                            End If
                        End If
                    Next i
                    'si la parte actual acaba o empieza en punto la dirección no es válida 
                    If Left(parte, 1) = "." Or Right(parte, 1) = "." Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Sintaxis de Correo Incorrecta, Verifique Simbolo ''.''"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        If lbl_mensaje.Text = "" Then
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If
                    If bandera3 = 0 Then
                        Exit For
                    End If
                Next parte
                'va.lidar la segunda mitad donde hay el . mas 2 o 3 caracteres
                'si en la segunda mitad no existe un punto
                If Not bandera3 = 0 Then
                    If InStr(partes(1), ".") <= 0 Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        If lbl_mensaje.Text = "" Then
                            pnl_mensaje.Visible = False
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If

                    i = Len(partes(1)) - InStrRev(partes(1), ".")
                    'si el número de caracteres despues del punto es distinto de 2 y 3 

                    If Not (i = 2 Or i = 3) Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        'si encuentra dos puntos seguidos
                        If InStr(lbl_mensaje.Text, "..") > 0 Then
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                            lbl_mensaje.UpdateAfterCallBack = True
                            Session("mail") = "2"
                            Session("update") = "update"
                            bandera3 = 0
                        Else
                            pnl_mensaje.Visible = False
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If
                End If

            End If
            'lblerroremail.Text = "FORMATO PARA EMAIL INCORRECTO, ASEGURESE QUE SEA COMO EL EJEMPLO: email@dominio.pop"
        Else
            'si no hay texto encendemos la bandera
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Completar Campo E-Mail"
            lbl_mensaje.UpdateAfterCallBack = True
            Session("mail") = "2"
            Exit Sub
            Dim bandera3
            bandera3 = 1
        End If

        SendMail(rp, ConfigurationManager.AppSettings("examen_email_callcenter_destino"))
        botonConfirm.Visible = True
        botonConfirm.UpdateAfterCallBack = True
    End Sub

    Sub SendMail(ByRef rp As DotNetResponse.SQLPersistence, ByVal destinatario As String)
        Try
            Dim Mail As MailMessage
            Dim SmtpServer As New SmtpClient()
            SmtpServer.Credentials = New Net.NetworkCredential(ConfigurationManager.AppSettings("examen_email_callcenter"), ConfigurationManager.AppSettings("clave_envio_clave_email")) 'WebConfig
            'SmtpServer.Port = 25
            SmtpServer.Host = ConfigurationManager.AppSettings("servidor_envio_clave_mail")
            'SmtpServer.EnableSsl = True
            Mail = New MailMessage()
            Try
                Mail.From = New MailAddress(ConfigurationManager.AppSettings("usuario_envio_clave_mail"), ConfigurationManager.AppSettings("usuario_envio_clave_mail"), System.Text.Encoding.UTF8) 'WebConfig     
                Mail.To.Add(destinatario)
                'Mail.Subject = ConfigurationManager.AppSettings("body_envio_clave_mail")
                'Mail.Body = ConfigurationManager.AppSettings("body_envio_clave_mail") & clave

                Mail.Subject = ConfigurationManager.AppSettings("reserva_hora")
                'Mail.Body = "Su Hora De Reserva Es: " & Session("prox_hora") & vbCrLf & vbCrLf & "Medico: " & Session("profesional") & vbCrLf & vbCrLf & "Especialidad: " & Session("especialidad_texto") & vbCrLf & vbCrLf & "Centro Medico: " & Session("centro_medico")
                Mail.Body = "Rut del Pacinte: " & Session("rut") & vbCrLf & vbCrLf & "Nombre del Paciente: " & txtNombres.Text & " " & txtApaterno.Text & " " & txtApaterno.Text & vbCrLf & vbCrLf & "Telefono del Paciente: " & txt_fonofijo.Text & vbCrLf & vbCrLf & "Celular del Paciente: " & txt_Celular.Text & vbCrLf & vbCrLf & "E-Mail del Paciente: " & txt_email1.Text & vbCrLf & vbCrLf & "Isapre del Paciente: " & cmb_isapre.SelectedItem.Text & vbCrLf & vbCrLf & "Direccion del Paciente: " & txtdireccion.Text & vbCrLf & vbCrLf & "Examen a Realizar: " & txt_examen.Text

                SmtpServer.Send(Mail)
            Catch ex As Exception
                rp.Errores = True
                rp.MensajeError = ex.Message
            End Try

        Catch ex As Exception
            rp.Errores = True
            rp.MensajeError = ex.Message
        End Try

        If rp.Errores Then
        Else

        End If
    End Sub
    Sub mail()
        'COMO EL EMAIL ES OPCIONAL, SI NO HAY TEXTO EN EL CAMPO NO HACE NADA
        Dim email_fin As String
        email_fin = txt_email1.Text '& "@" & txt_email11.Text

        If email_fin <> "" Then
            Dim partes, parte, letra
            Dim i As Integer
            Dim bandera3
            partes = Split(email_fin, "@")
            If UBound(partes) <> 1 Then
                pnl_mensaje.Visible = True
                pnl_mensaje.UpdateAfterCallBack = True
                lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                lbl_mensaje.UpdateAfterCallBack = True
                txt_email1.ReadOnly = False
                txt_email1.UpdateAfterCallBack = True
                'txt_email12.ReadOnly = False
                'txt_email12.UpdateAfterCallBack = True
                Session("mail") = "2"
                Session("update") = "update"
                bandera3 = 0
                Exit Sub
            Else
                For Each parte In partes
                    bandera3 = 1
                    For i = 1 To Len(parte)
                        letra = LCase(Mid(parte, i, 1))
                        If InStr("._-abcdefghijklmnopqrstuvwxyz123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", letra) <= 0 Then
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = "NO SE ACEPTA EL USO DE CARACTERES ESPECIALES COMO ñ,&,*,+,/,%,$"
                            lbl_mensaje.UpdateAfterCallBack = True
                            Session("mail") = "2"
                            Session("update") = "update"
                            bandera3 = 0
                            Exit For
                        Else
                            If lbl_mensaje.Text = "" Then
                                pnl_mensaje.Visible = False
                                pnl_mensaje.UpdateAfterCallBack = True
                                lbl_mensaje.Text = ""
                                lbl_mensaje.UpdateAfterCallBack = True
                            End If
                        End If
                    Next i
                    'si la parte actual acaba o empieza en punto la dirección no es válida 
                    If Left(parte, 1) = "." Or Right(parte, 1) = "." Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Sintaxis de Correo Incorrecta, Verifique Simbolo ''.''"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        If lbl_mensaje.Text = "" Then
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If
                    If bandera3 = 0 Then
                        Exit For
                    End If
                Next parte
                'va.lidar la segunda mitad donde hay el . mas 2 o 3 caracteres
                'si en la segunda mitad no existe un punto
                If Not bandera3 = 0 Then
                    If InStr(partes(1), ".") <= 0 Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        If lbl_mensaje.Text = "" Then
                            pnl_mensaje.Visible = False
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If

                    i = Len(partes(1)) - InStrRev(partes(1), ".")
                    'si el número de caracteres despues del punto es distinto de 2 y 3 

                    If Not (i = 2 Or i = 3) Then
                        pnl_mensaje.Visible = True
                        pnl_mensaje.UpdateAfterCallBack = True
                        lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                        lbl_mensaje.UpdateAfterCallBack = True
                        Session("mail") = "2"
                        Session("update") = "update"
                        bandera3 = 0
                    Else
                        'si encuentra dos puntos seguidos
                        If InStr(lbl_mensaje.Text, "..") > 0 Then
                            pnl_mensaje.Visible = True
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = "Formato Incorrecto, Ejemplo: paciente@clinicalaslilas.cl"
                            lbl_mensaje.UpdateAfterCallBack = True
                            Session("mail") = "2"
                            Session("update") = "update"
                            bandera3 = 0
                        Else
                            pnl_mensaje.Visible = False
                            pnl_mensaje.UpdateAfterCallBack = True
                            lbl_mensaje.Text = ""
                            lbl_mensaje.UpdateAfterCallBack = True
                        End If
                    End If
                End If

            End If
            'lblerroremail.Text = "FORMATO PARA EMAIL INCORRECTO, ASEGURESE QUE SEA COMO EL EJEMPLO: email@dominio.pop"
        Else
            'si no hay texto encendemos la bandera
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Completar Campo E-Mail"
            lbl_mensaje.UpdateAfterCallBack = True
            Session("mail") = "2"
            Exit Sub
            Dim bandera3
            bandera3 = 1
        End If
        Session("mail") = Nothing
    End Sub

    Function valida_datos()
        If txt_fonofijo.Text = "" Then
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Ingrese Número Telefonico"
            lbl_mensaje.UpdateAfterCallBack = True
            Return 0
        Else
            pnl_mensaje.Visible = False
            pnl_mensaje.UpdateAfterCallBack = True
        End If

        If txtNombres.Text = "" Then
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Ingrese su Nombre"
            lbl_mensaje.UpdateAfterCallBack = True
            Return 0
        Else
            pnl_mensaje.Visible = False
            pnl_mensaje.UpdateAfterCallBack = True
        End If

        If cmb_isapre.SelectedItem.Text = "" Then
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Ingrese Prevision"
            lbl_mensaje.UpdateAfterCallBack = True
            Return 0
        Else
            pnl_mensaje.Visible = False
            pnl_mensaje.UpdateAfterCallBack = True
        End If

        If txt_Celular.Text = "" Then
            pnl_mensaje.Visible = True
            pnl_mensaje.UpdateAfterCallBack = True
            lbl_mensaje.Text = "Ingrese su Celular"
            lbl_mensaje.UpdateAfterCallBack = True
            Return 0
        Else
            pnl_mensaje.Visible = False
            pnl_mensaje.UpdateAfterCallBack = True
        End If

        Return 1
    End Function

    Sub llena_combo()
        Dim exec As New DotNetDal.SQLPersistence(False, "cnn", DotNetDal.SQLPersistence.Provider.SQLCLIENT)
        Dim rp As New DotNetResponse.SQLPersistence
        rp.StoredProcedure = "SP_AME_GET_ISAPRE"
        exec.ExecuteDataTable(rp)
        If rp.TieneDatos Then
            cmb_isapre.DataTextField = "nombre"
            cmb_isapre.DataValueField = "codigo"
            cmb_isapre.DataSource = rp.DtTable
            cmb_isapre.UpdateAfterCallBack = True
            Me.cmb_isapre.DataBind()
        End If
        If rp.Errores Then
            'envío mensaje de error
        End If
    End Sub
End Class